<?php
/**
 * Created by PhpStorm.
 * User: skytop
 * Date: 16-8-29
 * Time: 下午12:36
 */

namespace Admin\Model;


/**[此类为根据id与pid将数据库中的数据排列]
 * [此类所有方法均是利用递归,所以很重要]
 * Class Category
 * @package Admin\Model
 */
class Category
{
    /**[返回带有html和level的数组]
     * @param $list         hd_cate 遍历数组
     * @param string $html  顶级栏目无横杠,二级栏目---,以此类推
     * @param int $pid      pid即为表中字段,现查顶级0,以此id查其pid=id的子分类
     * @param int $level    一级顶级分类,二级二级分类
     * @return array        返回带有'level'&& 'html'的数组
     */
    static public function unlimitedForLevel($list,$html='---',$pid=0,$level=0){
        $arr=array();
        foreach($list as $v){
            if($v['pid']==$pid){
                $v['level']=$level+1;
                $v['html']=str_repeat($html,$level);
                $arr[]=$v;
                $arr=array_merge($arr,self::unlimitedForLevel($list,$html,$v['id'],$level+1));
            }
        }
        return $arr;
    }

    /**[将cate根据pid压缩到同一个数组]
     * @param $list
     * @param int $pid
     * @return array
     */
    static public function unlimitedForlayer($list,$pid=0){
        $arr=array();
        foreach($list as $v){
            if($v['pid']==$pid){
                $v['child']=self::unlimitedForlayer($list,$v['id']);
                $arr[]=$v;
            }
        }
        return $arr;
    }

    /**[面包屑导航]
     * @param $list
     * @param $id       通过id查找到其主id id=pid
     * @return array
     */
    static public function getParents($list,$id){
        $arr=array();
        foreach($list as $v){
            if($v['id']==$id){
                $arr[]=$v;
                $arr=array_merge(self::getParents($list,$v['pid']),$arr);
            }
        }
        return $arr;
    }

    /**[通过主分类id找到其子集id或所有信息]
     * @param $list
     * @param $pid
     * @return array
     */
    static public function getChildsId($list,$pid){
        $arr=array();
        foreach($list as $v){
            if($v['pid']==$pid){
                $arr[]=$v['id'];
                /*$arr['child']=self::getChildsId($list,$v['pid']);*/
                $arr=array_merge($arr,self::getChildsId($list,$v['id']));
            }
        }
        return $arr;
    }
}